// un esempio di array sicuro
// aggiunge la verifica dei limiti a ovl_op_part_2

#include <iostream>
#include <cstdlib>
using namespace std;

class atype {
	int a[3];
public:
	atype(int i, int j, int k) {
		a[0] = i;
		a[1] = j;
		a[2] = k;
	}
	int &operator[](int i);
};

// verifica i limiti per atype
int &atype::operator [](int i)
{
	if(i<0 || i>2) {
		cout << "Superamento dei limiti\n";
		exit(1);
	}
	return a[i];
}

int main()
{
	atype ob(1,2,3);

	cout << ob[1]; // visualizza 2
	cout << "\n";

	ob[1] = 25; // [] alla sinistra di =

	cout << ob[1] << endl; // visualizza 25

	ob[3] = 44; // genera un errore run-time perche' 3 e' oltre i limiti
	return 0;
}
